package com.yuw.io.streamAndReader;

import java.io.*;

public class TestDriverStream {
    public static void main(String[] args) {
        System.out.println("---------------------------------------");
        test01();
        System.out.println("---------------------------------------");
        test02();

    }

    /**
     * 文件字节流——使用文件输入流读取文件的内容；使用文件输出流，将读取的内容输出到一个新命名的文件中【类似于文件的内容复制】
     */
    public static void test02() {
        // 输入流对象
        FileInputStream fis = null;
        // 输出流对象
        FileOutputStream fos = null;
        try {
            // 初始化文件对象
            // 文件输入流
            fis = new FileInputStream("D:/temp/filesdemo/temp100.txt");
            // 文件输出流
            // 构造方法的第二个参数：默认值为false表示覆盖写； true：表示从尾部接续写；
            fos = new FileOutputStream("D:/temp/filesdemo/temp100(1).txt",true);
            // 从文件中读取内容
            // 将读取的文件的内容存入byte数组中
            byte[] bytes;
            // 默认读取字符数为-1
            int len = -1;
            do {
                // 每次都是新的
                bytes = new byte[1024];
                len = fis.read(bytes);
                // 将读取的byte数组转换为字符换内容
                String str = new String(bytes);
                // 后续的业务逻辑处理。。。
                System.out.println(str);
                // 使用文件输出流对象将读取的输入流文件信息进行输出
                if(len != -1) { // 读取到了内容，才往外写
                    fos.write(bytes, 0, len);
                }

            } while (len != -1);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("文件输入流发生异常");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    /**
     * 文件字节流
     */
    public static void test01() {
        // 输入流对象
        FileInputStream fis = null;
        try {
            // 初始化文件对象
            fis = new FileInputStream("D:/temp/filesdemo/temp100.txt");
            // 从文件中读取内容
            // 将读取的文件的内容存入byte数组中
            byte[] bytes;
            // 默认读取字符数为-1
            int len = -1;
            do {
                // 每次都是新的
                bytes = new byte[1024];
                len = fis.read(bytes);
                // 将读取的byte数组转换为字符换内容
                String str = new String(bytes);
                System.out.println(str);
            } while (len != -1);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
            System.out.println("文件输入流发生异常");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭资源
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
